package com.unitd.base.frame.util.encrypt;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5加解密工具类
 *
 * @author Hudan
 * @version 1.0
 * @filename Md5.java
 * @copyright www.unitd.com
 * @date 2019-01-26
 */
public class Md5 {

    /**
     * 按照指定的编码格式,将指定字符串进行MD5加密
     *
     * @param str     需要加密的内容
     * @param charset 编码方式
     * @return 加密后的密文
     */
    public static String encrypt(String str, String charset) throws NoSuchAlgorithmException, UnsupportedEncodingException {
        StringBuilder sb = new StringBuilder();

        // 获取加密实例对象
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.update(str.getBytes(charset));
        byte[] result = md.digest();
        for (int i = 0; i < result.length; i++) {
            int val = result[i] & 0xff;
            if (val <= 0xf) {
                sb.append("0");
            }
            sb.append(Integer.toHexString(val));
        }
        return sb.toString().toLowerCase();
    }
}